package entidad;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List; 
import java.util.Objects;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;

@Entity
public class Producto implements Serializable{
    private String nombre;
    @Id
    private long codigo;
    private String marca;
    private int cantidad;
        
    @OneToMany
    private List<Lote> lotes;

    @OneToMany    
    private List<Proveedor> proveedores;

    public Producto () {
    }
    
    public Producto (long codigo, String nombre, String marca, int cantidad, List<Proveedor> proveedores) {
        this.codigo=codigo;
        this.nombre=nombre;
        this.marca= marca;
        this.cantidad=cantidad;
        this.proveedores=proveedores;
        lotes= new ArrayList<>();
    }
    
    public Producto (long codigo, String nombre, String marca, int cantidad, List<Proveedor> proveedores, List<Lote> lotes) {
        this.codigo=codigo;
        this.nombre=nombre;
        this.marca= marca;
        this.cantidad=cantidad;
        this.proveedores=proveedores;
        this.lotes=lotes;
    }
    
    public int getCantidad () {
        return cantidad;
    }

    public void setCantidad (int val) {
        this.cantidad = val;
    }

    public Long getCodigo () {
        return codigo;
    }

    public void setCodigo (long val) {
        this.codigo = val;
    }

    public List<Lote> getLotes () {
        return lotes;
    }

    public void setLotes (List<Lote> val) {
        this.lotes = val;
    }

    public String getMarca () {
        return marca;
    }

    public void setMarca (String val) {
        this.marca = val;
    }

    public String getNombre () {
        return nombre;
    }

    public void setNombre (String val) {
        this.nombre = val;
    }

    public List<Proveedor> getProveedores () {
        return proveedores;
    }

    public void setProveedores (List<Proveedor> val) {
        this.proveedores = val;
    }

    @Override
    public String toString() {
        return nombre + " - "+ codigo;
    }

    @Override
    public int hashCode() {
        int hash = 7;
        return hash;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Producto other = (Producto) obj;
        if (!Objects.equals(this.nombre, other.nombre)) {
            return false;
        }
        if (this.codigo != other.codigo) {
            return false;
        }
        return true;
    }
   
}

